﻿'Imports Fgv.Framework.Email.Dal
'Imports Fgv.Framework.Email.Dominio
'Imports System.Collections.Generic
'Imports Spring.Transaction
'Imports Spring.Transaction.Interceptor

'Namespace Email.Servicos

'    ''' <summary>
'    ''' Classe de Serviço do envio de e-mail,
'    ''' </summary>
'    ''' <remarks></remarks>
'    Public Class EnvioEmailServico
'        Implements IEnvioEmailServico


'        Private _EmailAnexoDao As IEmailAnexoDao

'        ''' <summary>
'        ''' Propriedade de Anexo de E-mail Dao
'        ''' </summary>
'        ''' <value>interface IEmailAnexoDao</value>
'        ''' <returns>interface IEmailAnexoDao</returns>
'        ''' <remarks></remarks>
'        Public Property EmailAnexoDao() As IEmailAnexoDao
'            Get
'                Return _EmailAnexoDao
'            End Get
'            Set(ByVal value As IEmailAnexoDao)
'                _EmailAnexoDao = value
'            End Set
'        End Property

'        Private _emailEnvioContaDao As IEmailEnvioContaDao

'        ''' <summary>
'        ''' Propriedade de Envio de conta de e-mail Dao
'        ''' </summary>
'        ''' <value>interface IEmailEnvioContaDao</value>
'        ''' <returns>interface IEmailEnvioContaDao</returns>
'        ''' <remarks></remarks>
'        Public Property EmailEnvioContaDao() As IEmailEnvioContaDao
'            Get
'                Return _emailEnvioContaDao
'            End Get
'            Set(ByVal value As IEmailEnvioContaDao)
'                _emailEnvioContaDao = value
'            End Set
'        End Property

'        Private _emailDao As IEmailDao

'        ''' <summary>
'        ''' Propriedade do Email Dao
'        ''' </summary>
'        ''' <value>Interface IEmailDao</value>
'        ''' <returns>Interface IEmailDao</returns>
'        ''' <remarks></remarks>
'        Public Property EmailDao() As IEmailDao
'            Get
'                Return _emailDao
'            End Get
'            Set(ByVal value As IEmailDao)
'                _emailDao = value
'            End Set
'        End Property

'        Private _solicitacaoDao As ISolicitacaoEnvioEmailDao

'        ''' <summary>
'        ''' Propriedade de Solicitacao de envio de e-ail Dao
'        ''' </summary>
'        ''' <value>interface ISolicitacaoEnvioEmailDao</value>
'        ''' <returns>interface ISolicitacaoEnvioEmailDao</returns>
'        ''' <remarks></remarks>
'        Public Property SolicitacaoEnvioEmailDao() As ISolicitacaoEnvioEmailDao
'            Get
'                Return _solicitacaoDao
'            End Get
'            Set(ByVal value As ISolicitacaoEnvioEmailDao)
'                _solicitacaoDao = value
'            End Set
'        End Property

'        ''' <summary>
'        ''' Busca de email pelo seu identificador.
'        ''' </summary>
'        ''' <param name="_id">Long</param>
'        ''' <returns>classe Email</returns>
'        ''' <remarks></remarks>
'        <Transaction(TransactionPropagation.Supports, ReadOnly:=True)> _
'        Public Function BuscarEmailPorId(ByVal _id As Long) As Dominio.Email _
'                Implements IEnvioEmailServico.BuscarEmailPorId
'            Return EmailDao.Buscar(_id)
'        End Function

'        ''' <summary>
'        ''' Busca todos os E-mail's
'        ''' </summary>
'        ''' <returns>Lista(classe Email)</returns>
'        ''' <remarks></remarks>
'        <Transaction(TransactionPropagation.Supports, ReadOnly:=True)> _
'        Public Function BuscarEmailTodos() As List(Of Dominio.Email) _
'                Implements IEnvioEmailServico.BuscarEmailTodos
'            Return EmailDao.BuscarTodos
'        End Function

'        ''' <summary>
'        ''' Busca o anexo de e-mail pelo ID do e-mail
'        ''' </summary>
'        ''' <param name="_id">Long</param>
'        ''' <returns>Lista(classe EmailAnexo)</returns>
'        ''' <remarks></remarks>
'        <Transaction(TransactionPropagation.Supports, ReadOnly:=True)> _
'        Public Function BuscarEmailAnexosPorEmailId(ByVal _id As Long) As IList(Of EmailAnexo) _
'                Implements IEnvioEmailServico.BuscarEmailAnexosPorEmailId
'            Return EmailAnexoDao.BuscarTodos()
'        End Function

'        ''' <summary>
'        ''' Busca todas as Solicitações de envio de e-mail
'        ''' </summary>
'        ''' <returns>Lista(classe SolicitacaoEnvioEmail)</returns>
'        ''' <remarks></remarks>
'        <Transaction(TransactionPropagation.Supports, ReadOnly:=True)> _
'        Public Function BuscarTodasSolicitacoesEnvioEmail() As IList(Of SolicitacaoEnvioEmail) _
'                Implements IEnvioEmailServico.BuscarTodasSolicitacoesEnvioEmail
'            Return SolicitacaoEnvioEmailDao.BuscarTodos()
'        End Function

'        ''' <summary>
'        ''' Busca as Solicitações pela Unidade.
'        ''' </summary>
'        ''' <param name="_unidade">String</param>
'        ''' <returns>Lista(classe SolicitacaoEnvioEmail)</returns>
'        ''' <remarks></remarks>
'        <Transaction(TransactionPropagation.Supports, ReadOnly:=True)> _
'        Public Function BuscarSolicitacoesPorUnidade(ByVal _unidade As String) As IList(Of SolicitacaoEnvioEmail) _
'                Implements IEnvioEmailServico.BuscarSolicitacoesPorUnidade
'            Dim _solicitacao As New SolicitacaoEnvioEmail
'            _solicitacao.UnidadeRequisitante = _unidade
'            Return SolicitacaoEnvioEmailDao.BuscarPorSolicitacao(_solicitacao)
'        End Function

'        ''' <summary>
'        ''' Solicitação de envio de e-mail
'        ''' </summary>
'        ''' <param name="_solicitacaoEnvioEmail">SolicitacaoEnvioEmail</param>
'        ''' <remarks></remarks>
'        <Transaction(TransactionPropagation.Required)> _
'        Public Sub SolicitaEnvioEmail(ByVal _solicitacaoEnvioEmail As SolicitacaoEnvioEmail) Implements IEnvioEmailServico.SolicitaEnvioEmail
'            If Not _solicitacaoEnvioEmail.DataHoraAgendada.HasValue Then
'                _solicitacaoEnvioEmail.DataHoraAgendada = DateTime.Now
'            End If
'            _solicitacaoEnvioEmail.Status = SolicitacaoEnvioEmail.StatusEnvio.Agendado
'            SolicitacaoEnvioEmailDao.Salvar(_solicitacaoEnvioEmail)
'        End Sub

'        ''' <summary>
'        ''' Busca a conta do usuário pelo ID
'        ''' </summary>
'        ''' <param name="_idConta">Long</param>
'        ''' <returns>classe EmailEnvioConta</returns>
'        ''' <remarks></remarks>
'        <Transaction(TransactionPropagation.Required)> _
'        Public Function BuscarContaPorId(ByVal _idConta As Long) As EmailEnvioConta Implements IEnvioEmailServico.BuscarContaPorId
'            Return EmailEnvioContaDao.Buscar(_idConta)
'        End Function

'        ''' <summary>
'        ''' Registrar o e-mail enviado no sistema
'        ''' </summary>
'        ''' <param name="_id">Long</param>
'        ''' <remarks></remarks>
'        <Transaction(TransactionPropagation.Required)> _
'        Public Sub RegistrarEmailEnviado(ByVal _id As Long) _
'            Implements IEnvioEmailServico.RegistrarEmailEnviado
'            Dim _solicitacao As SolicitacaoEnvioEmail = SolicitacaoEnvioEmailDao.Buscar(_id)
'            _solicitacao.DataHoraEnvio = Now
'            _solicitacao.Status = SolicitacaoEnvioEmail.StatusEnvio.Enviado
'            SolicitacaoEnvioEmailDao.SalvarOuAlterar(_solicitacao)
'        End Sub

'        ''' <summary>
'        ''' Salva o E-mail.
'        ''' </summary>
'        ''' <param name="_email">classe Email</param>
'        ''' <remarks></remarks>
'        Public Sub SalvarEmail(ByVal _email As Dominio.Email) Implements IEnvioEmailServico.SalvarEmail
'            EmailDao.Salvar(_email)
'        End Sub

'        ''' <summary>
'        ''' Salva a solicitação de envio de e-mail
'        ''' </summary>
'        ''' <param name="_solicitacao">classe SolicitacaoEnvioEmail</param>
'        ''' <remarks></remarks>
'        Sub SalvarSolicitacao(ByVal _solicitacao As SolicitacaoEnvioEmail) Implements IEnvioEmailServico.SalvarSolicitacao
'            SolicitacaoEnvioEmailDao.Salvar(_solicitacao)
'        End Sub

'        ''' <summary>
'        ''' Função que buscar as solicitações de envio de email
'        ''' </summary>
'        ''' <param name="_tipoFatoGerador">_tipoFatoGerador(String)</param>
'        ''' <param name="_codigoFatoGerador">_codigoFatoGerador(Long)</param>
'        ''' <returns>IList(Of SolicitacaoEnvioEmail)</returns>
'        ''' <remarks></remarks>
'        Public Function BuscarSolicitacoesPorCodigoETipoFatoGerador(ByVal _tipoFatoGerador As String, ByVal _codigoFatoGerador As Long) As IList(Of SolicitacaoEnvioEmail) Implements IEnvioEmailServico.BuscarSolicitacoesPorCodigoETipoFatoGerador
'            Return SolicitacaoEnvioEmailDao.BuscarSolicitacoesPorCodigoETipoFatoGerador(_tipoFatoGerador, _codigoFatoGerador)
'        End Function

'        ''' <summary>
'        ''' Exclusão da solicitação de envio de email
'        ''' </summary>
'        ''' <param name="_solicitacao">_solicitacao(Dominio.SolicitacaoEnvioEmail)</param>
'        ''' <remarks></remarks>
'        Public Sub ExcluirSolicitacao(ByVal _solicitacao As Dominio.SolicitacaoEnvioEmail) Implements IEnvioEmailServico.ExcluirSolicitacao
'            SolicitacaoEnvioEmailDao.Apagar(_solicitacao)
'        End Sub

'        <Transaction(TransactionPropagation.Supports, ReadOnly:=True)> _
'        Public Function BuscarSolicitacoesNaoEnviadas() As IList(Of SolicitacaoEnvioEmail) Implements IEnvioEmailServico.BuscarSolicitacoesNaoEnviadas
'            Return SolicitacaoEnvioEmailDao.BuscarSolicitacoesNaoEnviadas()
'        End Function

'    End Class

'End Namespace


